The system was built using a 3-tier technology; namely a client side, a server side and the database. We used JavaServer Pages (JSP) for the server side and JavaScript/CSS/HTML for client side. The reason for choosing JSP is that it is a very popular technology and most of the team members were unfamiliar with it, so it served as a good chance to learn more about it. Tomcat was the web server that hosted our service and development was done under Mac OS X and Linux.

For the database layer we used PostgreSQL which was provided by the department. For accessing the database with Java we chose Hibernate\footnote{Hibernate is an Object-Relational Mapping tool for Java available from \url{https://www.hibernate.org/}} over JDBC\footnote{Java DataBase Connectivity: \url{http://java.sun.com/products/jdbc/overview.html}}. According to \cite{JLDM}, ``\emph{JDBC requires a considerable body of code and careful observation of various rules (such as those governing connection management) to ensure that your application does not leak resources}". 

\subsubsection{Server Side}

\begin{itemize}
\item \textbf{JSP} - Java Server Pages
\item \textbf{Tomcat} - Webserver for JSP Web Applications
\item \textbf{Hibernate} - Relational Persistence Framework for Java
\item \textbf{PostgreSQL} - Database Management System
\end{itemize}

\subsubsection{Remote Libraries}

\begin{itemize}
\item \textbf{Jena API} \cite{Jena} - Used to query DBpedia via SPARQL queries
\item \textbf{Facebook JavaScript API} \cite{FB} - Used for obtaining a user's profile image (which we are not allowed to store), name details and friends.
\item \textbf{YouTube API} \cite{YT} - Used for Video Recommendations
\item \textbf{Last.fm API} \cite{LF} - Used for Music Recommendations
\end{itemize}


\subsubsection{Client Side}

\begin{itemize}
\item \textbf{HTML/CSS} - Popular formatting format for web pages
\item \textbf{JavaScript} - Popular web-browser scripting language
\item \textbf{Prototype\footnote{Prototype JavaScript Framework: \url{http://www.prototypejs.org/}}} - Framework for JavaScript and AJAX\footnote{Asynchronous JavaScript and XML}
\end{itemize}

\subsubsection{Development, Debugging \& Testing}

\begin{itemize}
\item \textbf{Eclipse} - Cross Platform Java IDE
\item \textbf{JUnit} - Unit testing library that can easily be used within Eclipse
\end{itemize}

\subsubsection{Collaboration Tools}

\begin{itemize}
\item \textbf{Google Docs \& Spreadsheet} - Used for report writing and keeping logs
\item \textbf{Subversion} \cite{SVN} - Free/Open source version control system that operates across networks and gives the ability for various people to modify and manage the same set of data.
\end{itemize}